"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/2/28 8:31
@Description : 

知识回顾  封装
"""


class Person:
    person_name = 'tom'
    #  私有化属性    但是在当前类中可以直接访问
    __person_age = 23

    # 定义函数实现年龄的赋值操作
    def set_person_age(self, age):
        if age > 0 and age < 130:
            self.__person_age = age
        else:
            print('请输入合理的年龄')

    # 获取年龄的函数
    def get_person_age(self):
        return self.__person_age


# 创建对象
person = Person()
# 访问对象属性
print(person.person_name)
# print(person.__person_age)
#  改变对象属性值
# person.person_name = 'Tom'
#  属性值 合法不合理   1 - 130  封装   属性私有化  属性名前添加双下划线  __属性名     方法公开化
# print(person.person_age)
person.set_person_age(30)
# 访问对象属性
print(f'person._Person__person_age = {person._Person__person_age}')
print(person.person_name)
# 访问公开的方法 实现私有属性的访问
print(person.get_person_age())

print('------------------------------')

'''
    python中的属性私有化的实现方法 : 通过改变变量名的形式  实现私有化处理  
    __student_age = 20   ->    _类名__student_age = 20
    python中的私有化 是限制级别而不是禁止级别,后续可以通过类名会对象的形式访问私有的属性 但是不推荐   这种操作违背了python的封装原则
    
'''

class Student:
    # 属性的私有化
    __student_age = 20


#  通过类名访问私有属性  通过改变后的名字
Student._Student__student_age = 30
print(Student._Student__student_age)

print('--------------------------------------')


class Aoo:
    __private_attribute = 50
    pass
    # def __init__(self):
    #     self.__private_attribute = 80


aoo = Aoo()
aoo.__private_attribute = 30
print(aoo.__private_attribute)
print(aoo._Aoo__private_attribute)
